//   /* measure 处理关于滚动模式的空白行问题 */
//   .entable.measure tbody > tr: first - child > td {
//     height: 0px!important;
//     padding: 0px!important;
// }


// 1、添加序号功能，现已不使用，可以使用计算列，赋值数据集的跨页序号
// // 根据当前页索引，计算序号
// getRowIndex(rowIndex){
//     var data = this.comp("mainData");
//     // 通过data的offset和limit计算行的index
//     var index = data.getOffset() - data.getLimit() + rowIndex + 1;
//     // 把计算的index用来显示行号
//     if (index < 1) {
//         return "";
//     }
//     return index;
// }

// 参数为：table的当前行索引
// $page.getRowIndex(参数)

// 2、处理显示页码序号
// onRestData1AfterRefresh(event/*{{{*/ = this._e.restData_afterRefresh/*}}}*/){
//     var foffset = event.offset;//偏移数
//     var flimit = event.limit;//每次返回最大数
//     var fpage = foffset / flimit;//当前页码数
//     var data = event.source;//当前数据对象
//     //把序号写入当前数据的一列上，比如当前行号的列是fname
//     var fstartCount = (fpage - 1) * flimit + 1;
//     var fname;
//     data.each(function (param) {
//         fname = param.index + fstartCount;
//         param.row.fname = fname;
//     });
// }

// 3、设置表格等待框 加载中loading
// // 获取表格组件，设置true或false 
// this.comp('list').set({ loading: true });

// 4、循环数据返回的数据
// var data = event.source;//当前数据对象
// //把序号写入当前数据的一列上，比如当前行号的列是fname
// var fstartCount = (fpage - 1) * flimit + 1;
// var fname;
// data.each(function (param) {
//     fname = param.index + fstartCount;
//     param.row.rowNo = fname;
//     console.log(param.row.rowNo);
//     console.log(param.row);
// });

// 5、重写企业桌面端样式（Ant组件）
//   : global(.c - drawer.ant - drawer - body){
//     padding: 0;
// }
  
//   : global(.c - layout.ant - layout - header){
//     padding: 0;
//     line - height: 40px;
// }

// 6、表单标签绑定

//     < antd:Col id = "col_5" span = "8" >
//         <antd:Form.Item bind:label="mainData.label(&quot;address&quot;)" id="formItem_5">
//             <antd:Input bind:ref="mainData.current.address" id="input5" />
//         </antd:Form.Item >
//   </antd: Col >

//     7、antd上传改样式
// : global {
//   .ant - upload - list - picture - card - container,
//   .ant - upload.ant - upload - select - picture - card {
//         width: 88px;
//         height: 128px;
//     }
// }

//   /* 表格重写样式 */
//   : global( .pink.ant - table - thead > tr > th){
//     background: pink;
// }

// 8、表格数据 弹框点确定后 ，刷新数据
// // 员工编辑对话框，数据接收完成事件
// onDialog0Received(event/*{{{*/ = this._e.Dialog_received/*}}}*/){
//     if (Array.isArray(event.data) && event.data.length == 1) {
//         let data = this.comp("mainData")
//         // 根据当前页码刷新数据
//         data.loadPageData(this.comp("pagination0").current.value)
//     }
// }

// 9、字典数据集和树列表名称显示
// 引用pubjs
// import pubJs from '$UI/pcx/pub';


// // 字典数据加载后
// onDictData1AfterRefresh(event){
//     pubJs.onDictData1AfterRefresh(this, event);
// }

// //  根据字典值和字典类型获取值
// getDictLabelByType(dataKey, dictType){
//     return pubJs.getDictLabelByType(this, dataKey, dictType);
// }

// 页面中使用标签，绑定如下字段
// $page.getDictLabelByType(表格0当前行.岗级职级, "work_level")
// 10、修改打开的tab标题
// $(".content-wrapper ").children("section.content-header").children("section").find(".cimeQJn.select").find("span.cimeQJn").html("员工信息修改2")

// 11、显示提示信息
// wx.showToast({
//     title: '保存成功',
//     duration: 1500
// })

// // 其他几种提示信息的方法
// this.hint('提示信息', 'info', 1500)
// this.hint('成功信息', 'success', 2000)
// this.hint('警告信息', 'warning', 3000)
// 12、修改用户信息
// var self = this; // 用户表 var personData = this.comp("personData"); // 用户扩展表 var usersxData = this.comp("mainData"); var loadingBar = this.comp("loading0"); if (!usersxData.getValue("sex") || usersxData.getValue("sex") + "" == "0") { justep.Util.hint("请选择性别"); return; } var user = { "id": usersxData.getValue("id"), "userName": usersxData.getValue("userCode"), "name": usersxData.getValue("familyName"), "phone": usersxData.getValue("phonenumber"), "active": true, "verified": true, "email": usersxData.getValue("email"), "data15": usersxData.getValue("sex"), //性别 "data17": usersxData.getValue("birthday") //生日 }; //修改人员 执行门户的服务 this.comp("updatePersonRequest").send({ oldPhone: self.originPhone, personInfo: JSON.stringify(user) }).then(function (ret) { // loadingBar.hide(); if (ret.data == "OK") { // self.updateTwofactorlogin(); usersxData.saveData().then(() => { // self.comp("windowReceiver").windowEnsure(self._params); justep.Util.hint("用户保存成功！"); setTimeout(() => { //justep.Shell.sendMessage({ msgtype: 'OK' }, 'msgtype') let msg = { msgtype: 'OK' }; self.comp("commonOperation").okclose(self.comp("mainData")) }, 200) }); } else { throw justep.Error.create("修改人员信息失败！" + JSON.parse(ret.data).message); } }, (err) => { debugger console.log(err) }); //组织名称修改后，更新authorize表和opm_manageorgs表 var currentRow = usersxData.getCurrentRow(); if (currentRow.familyName != self.originName) { this.comp("changeNameRequest").send({ oldName: self.originName, newName: currentRow.familyName }); }


// 13、内嵌页面，调用父页面
// const parentPage = self.getParentFrame().page;
// // 设置父页面的值
// parentPage.comp("tableCustomData0").setValue('isRefresh', true);
// // 父页面传递数据到 内嵌页面，
// this.comp("内嵌页面id').postMessageToChild(option)
  
//   14、抽屉的相关方法调用
//   新建按钮的事件处理
//   const dtData = this.comp("mainData");
// var self = this;
// this.isNew = true
// dtData.newData({
//     onSuccess: function (data) {
//         setTimeout(function () {
//             self.comp("drawer").open();
//             dtData.to(data.data[0]);
//         }, 200);
//     }
// });

// 取消按钮的事件处理
// this.comp("drawer").close();
// if (this.isNew) {
//     this.isNew = false
//     // 移除最后添加的数据
//     const dtData = this.comp("mainData");
//     dtData.remove(dtData.getLastRow())
// }


// 保存按钮的事件处理
// const self = this;
// this.comp("mainData").saveData({
//     onSuccess: function (params) {
//         self.comp("drawer").close();
//     }
// });

// 15、页面调用Ok返回方法




// self.comp("commonOperation").okclose(self.comp("mainData"))


// 16、抽屉详情页面共用方法
// // 在 IndexPage  上面添加引用
// import detailBase from '$UI/pcx/pageUtils/userDetailBase';

// // 在构造函数中，实例化
// this.detailbase = new detailBase(this);

// /** 其他共用方法 **/
// // 接受消息
// onPageMessage(event/*{{{*/ = this._e.page_message/*}}}*/){
//     this.detailbase.onPageMessage(event);
// }

// // 字典处理
// onDictData0AfterRefresh(event/*{{{*/ = this._e.restData_afterRefresh/*}}}*/){
//     this.detailbase.onDictDataAfterRefresh(event);
// }

// // 列序号
// getRowIndex(index) {
//     return this.detailbase.getRowIndex(index);
// }

// // 表格code转名称
// getDictLabelByType(dataKey, dictType){
//     return this.detailbase.getDictLabelByType(dataKey, dictType);
// }

// // 新增按钮
// onBtnNewOnClick(event/*{{{*/ = this._e.Button_onClick/*}}}*/){
//     this.detailbase.onBtnNew();
// }
// // 保存按钮
// onBtnSaveOnClick(event/*{{{*/ = this._e.Button_onClick/*}}}*/){
//     this.detailbase.onBtnSave();
// }
// // 取消按钮
// onBtnCancelOnClick(event/*{{{*/ = this._e.Button_onClick/*}}}*/){
//     this.detailbase.onBtnCancel();
// }

// 17、js代码调用，打开tab页操作
// var row = this.comp("mainData").getCurrentRow()
// justep.Shell.showPage(
//     {
//         url: this.getUIUrl("$UI/pcx/liucheng_sp/yuangong_jcxxlc2.w"),
//         title: "流程审批-基本信息修改申请"
//     }
// );

// 18、表格行按钮事件
// onBtnDetailOnClick(event/*{{{*/ = this._e.Button_onClick/*}}}*/) {
//     // 获取按钮所在的数据行
//     var row = event.context.$item;
// }

// 19、格式化金额
// import pubJs from '$UI/pcx/pub';


// getMoneyFormat(valmoney) {
//     return pubJs.getMoneyFormat(valmoney);
// }

// 20、通过LocalStorage存储和加载数据集
// // 1、存储
// this.comp("mainData").saveToStorage("projectPlan_addVersion_mainData")

// // 2、通过wx.getStorage 读取数据

// // 根据子数据集名称重置数据id
// let detailDataFn = (dataName) => {
//     let memberData = this.comp(dataName)
//     if (memberData) {
//         let key = "projectPlan_addVersion_" + dataName
//         wx.getStorage({ key }).then(res => {
//             wx.removeStorageSync({ key })
//             let mdatalist = res.data
//             mdatalist.forEach(item => {
//                 item.fid = justep.UUID.createUUID()
//                 delete item._recoredState
//             })
//             memberData.newData({
//                 defaultValues: mdatalist
//             })
//         })
//     }
// }

// wx.getStorage({ key: "projectPlan_addVersion_mainData" }).then(res => {
//     wx.removeStorageSync({ key: "projectPlan_addVersion_mainData" })
//     if (res.data && res.data.length > 0) {
//         let wxData = res.data[0]
//         // 移除数据记录状态
//         delete wxData._recoredState
//         let mainKeys = Object.keys(wxData)
//         mainKeys.forEach(key => {
//             mainData.setValue(key, wxData[key])
//         })
//         setMainFn(mainData, projectData)
//         mainData.setValue("fid", justep.UUID.createUUID())
//         mainData.setValue("version", mainData.getValue("version") + 1)
//         mainData.setValue("processState", 1)
//         mainData.setValue("createTime", wx.Date.now())

//         setTimeout(() => {
//             detailDataFn("memberData")
//             detailDataFn("detailData")
//             detailDataFn("timePointData")
//         }, 100);
//     }
// })

// 21、Tag根据类型切换不同样式
// bind: class="{'ant-tag-default':table0item.state == &quot;1&quot;,'ant-tag-processing':table0item.state == &quot;2&quot;,'ant-tag-success':table

// 22、根据身份证号处理性别
// // 根据身份证号处理性别
// if (idNumber.length == 18 && wx.Util.testIDCard(idNumber)) {
//     let idSex = parseInt(idNumber.substr(16, 1)) % 2 == 1 ? '1' : '2'
//     this.comp('mainData').setValue("sex", idSex)
// }

// 23、搜索框 服务端端搜索案例
//     < Select />
//     // 组件上，添加loading等待框
//     loading="jsx:{$page?$page.owner.data.HrLoadingSel:true}" on: onSearch = "onSelect2OnSearch"

// // 搜索后值变化
// onSelect2OnSearch(event/*{{{*/ = this._e.Select_onSearch/*}}}*/) {
//     let data = event.data
//     let searchFn = (txt) => {
//         this.preSearchTxt = txt
//         // 调用接口查询
//         this.comp('getAllReleaseProject').send({
//             mixedParam: txt
//         })
//     }

//     if (data.value != this.preSearchTxt) {
//         // 添加1秒防抖处理
//         clearTimeout(this.searchTimer)
//         this.searchTimer = setTimeout(() => {
//             searchFn(data.value)
//         }, 1000)
//     }
// }

// // 接口请求前
// onGetAllReleaseProjectBeforeRequest(event/*{{{*/ = this._e.serviceRequest_beforeRequest/*}}}*/) {
//     this.setData({
//         'HrLoadingSel': true
//     })
// }

// // 请求失败后
// onGetAllReleaseProjectError(event/*{{{*/ = this._e.serviceRequest_error/*}}}*/) {
//     this.setData({
//         'HrLoadingSel': false
//     })
// }

// // 请求成功处理数据
// onGetAllReleaseProjectSuccess(event/*{{{*/ = this._e.serviceRequest_success/*}}}*/) {
//     let result = event.data
//     if (result.state == 1) {
//         let projectData = JSON.parse(result.data)
//         if (Array.isArray(projectData)) {
//             // pid和fid赋值
//             projectData.forEach(item => {
//                 item.fid = item.pid
//             })

//             // 将读取到的数据，放入下拉框中
//             this.comp('restDataProject').clear()
//             if (projectData.length == 0) {
//                 clearTimeout(this.noProjectTipTimer)
//                 this.noProjectTipTimer = setTimeout(() => {
//                     this.hint('未搜索到相关项目!', 'info', 1000)
//                 }, 1000)
//             } else {
//                 this.comp('restDataProject').newData({
//                     defaultValues: projectData
//                 })
//             }
//         }
//     }
//     setTimeout(() => {
//         this.setData({
//             'HrLoadingSel': false
//         })
//     }, 500)
// }

// 24、弹出框组件，支持 居中显示且可以设置点击蒙版不关闭，可以调用其他应用的页面
// this.comp('taskDialog').open({
//     src: '/ent/pcxapp/pcx/commonfuns/dictManageHr.w'
// },
//     {
//         maskClosable: false,// 点击遮罩关闭
//         keyboard: true,     // esc 关闭
//         mask: true,         // 显示mask
//         centered: true,     // 居中显示
//         closable: false     // 隐藏关闭按钮
//     })

// 25、附件上传组件，不显示删除按钮
// : global {
//       .jsgh_filelist.ant - upload - list - item - card - actions - btn.ant - btn - sm{
//         display: none!important;
//     }
// }
//    /* 处理表格中，有附件高度异常的问题 */
//   : global {
//     td.filerdupload > span > div.ant - upload - list > div.ant - upload - list - text - container::before {
//         display: none!important;
//     }

//     td.filerdupload > span > div.ant - upload - list::before {
//         display: none!important;
//     }
// }

// 26、页面间数据传值

// 页面间传递数据有四张方案:
// 1、对话框传递和返回数据；

// 2 、利用页面间共享数据集机制；

// 3、利用windows或wx全局变量挂回调函数实现（A页面设置函数回调，B页面调用）；

// 4、引入一个开源的eventbus库

// 27、Antd的Upload预览框
//     .ant - image - preview - mask {
//     z - index: 10000;
//     background - color: rgba(0, 0, 0, 0.85);
// }

// 28、组织树或树组件禁用的样式修改
//     /* 组织树禁用状态颜色修改 */
//     .pcx - page.ant - tree.ant - tree - treenode - disabled.ant - tree - node - content - wrapper{
//     color: #333333!important;
// }
//   .pcx - page.ant - tree - treenode - disabled.x - org - cls {
//     filter: grayscale(50 %) opacity(100 %);
// }
//   .pcx - page.x - org - dialog.ant - tree.ant - tree - treenode - disabled.ant - tree - node - content - wrapper{
//     color: #333333!important;
// }
//   .pcx - page.x - org - dialog.ant - tree.ant - tree - treenode - disabled.x - org - cls{
//     filter: grayscale(50 %) opacity(100 %);
// }

// 29、控制页面不滚动，表格自动出现滚动条
// 页面设置自定义样式
// c - pagehidden

// import pubJs from '$UI/pcx/pub'
// 在onPageLoaded事件中，添加如下代码：
// pubJs.setPageTableScroll(this.comp('mainTable')) // list

// 30、表格事件 行单击、行选择，解决单选或选择 与选中不符的问题
// // 行选择
// onTable0OnRowSelectChange(event) {
//     let selkeys = event.data.selectedRowKeys
//     if (selkeys.length > 0) {
//         let rowid = selkeys[selkeys.length - 1]
//         this.comp('mainData').to(rowid)
//     }
// }

// // 表格 行点击
// onTable0OnRowClick(event) {
//     let rowid = event.data.rowID
//     this.comp("tableUser").setSelectedRowIds([rowid]);
// }

// 31、组织对话框，多选时，默认选中
// // wcs 2023-0227 获取差旅人默认选中
// getSelectedFilterUser(){
//     let travelerFIds = this.comp('detailData').getValue('travelerFIds')
//     if (travelerFIds) {
//         return { name: 'fid', value: travelerFIds, op: 'inn' }
//     } else {
//         return null
//     }
// }

// 32、内嵌页面父子组件互调
// // pcx内嵌页面中调用父页面的组件
// this.getParentFrame().page.comp("抽屉组件的id").close()

// // 父页面获取内嵌页面中的组件
// var pageFrame = this.comp("pageFrame0");
// pageFrame.getChildPage().comp("嵌套页面的组件id")

// 33、各部门FID
//     // 江苏省规划设计集团
//     / 94E65562360C4D83BA9EE064A3109082.ogn

//         // 综合办公室
//         / 94E65562360C4D83BA9EE064A3109082.ogn / A8CE2CC5ACB943FDA7FCD8C601B9D861.dpt

//             // 党委组织部（人力资源部）
//             / 94E65562360C4D83BA9EE064A3109082.ogn / 5664508E785847B5AABC760BD5F801F3.dpt

//                 // 战略企划部
//                 / 94E65562360C4D83BA9EE064A3109082.ogn / 747AC3C952CB40C1A7617FD6759388CD.dpt

//                     // 资产财务部
//                     / 94E65562360C4D83BA9EE064A3109082.ogn / 9449A537FB524AAD9E5C0DE2272FB025.dpt

//                         // 技术中心部门
//                         / 94E65562360C4D83BA9EE064A3109082.ogn / 1BC5EDD6500A4BDCBE97FAFDCE12CA0D.dpt

//        // 数据信息中心
//                             / 94E65562360C4D83BA9EE064A3109082.ogn / C921FFD66F57435E841CDBC1CF1FDEBB.dpt

// 34、各流程找人接口说明
// 根据角色获取处理人
// gethandlerbyroles



// 获取拥有指定角色的组织

// findOrgUnitsHasRoleByCode


// 筛选拥有指定角色的组织

// filterOrgUnitsHasRoleByCode


// 包含角色

// containRoles



// 其他常用代码，待添加

